package metier.jdbc.affectation;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import metier.Affectation;
import configuration.MessageAppli;

public class AffectationJdbc {

/**
 * Permet d'ajouter une affectation.
 * @param c
 * @param uneAffectation
 * @return boolean
 */	
public static boolean ajouter(Connection c, Affectation uneAffectation) {
	//Préparer la requete sql 
	//Retourne un entier égal à 1 
	//Si l’insertion en base de données a été réalisée
	
	int res = 0;
	try
	{
		PreparedStatement ps=c.prepareStatement("INSERT INTO affectation (libelleaffect) VALUES (?)");
		
		//Affecter les values correspondant aux colonnes
		ps.setString(1, uneAffectation.getLibelleAffect());
		res = ps.executeUpdate();
		ps.close();
	}
	catch (SQLException e)
	{
		e.printStackTrace();
		JOptionPane.showMessageDialog(null, MessageAppli.MSG_BDD_ERREUR_REQUETE,
		MessageAppli.MSG_BDD_TITRE_ERREUR, JOptionPane.ERROR_MESSAGE);
	}
	return res==1;
}

/**
 * Permet de modifier une affectation.
 * @param c
 * @param uneAffectation
 * @return boolean
 */
public static boolean modifier(Connection c, Affectation uneAffectation) {
	//Préparer la requete sql 
	//Retourne un entier égal à 1 
	//Si la modification en base de données a été réalisée
	
	int res = 0;
	if ( uneAffectation.getIdAffect() != null )
	{
		try
		{
			PreparedStatement ps=c.prepareStatement(
			"UPDATE affectation set libelleaffectation = ? WHERE idaffect = ?");
			
			//Affecter les values correspondant aux colonnes
			ps.setString(1, uneAffectation.getLibelleAffect());
			ps.setInt(2, uneAffectation.getIdAffect());
			res = ps.executeUpdate();
			ps.close();
			return res == 1;
		}
		catch (SQLException e)
		{
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, MessageAppli.MSG_BDD_ERREUR_REQUETE,
					MessageAppli.MSG_BDD_TITRE_ERREUR, JOptionPane.ERROR_MESSAGE);
		}
	}
	return false;	
}

/**
 * Permet de supprimer une affectation.
 * @param c
 * @param uneAffectation
 * @return boolean
 */
public static boolean supprimer(Connection c, Affectation uneAffectation) {
	//Préparer la requete sql 
	//Retourne un entier égal à 1 
	//Si la suppression en base de données a été réalisée
	
	int res = 0;
	try
	{
		PreparedStatement ps=c.prepareStatement("DELETE FROM affectation WHERE idaffect = ?");
		
		//Affecter les values correspondant aux colonnes
		ps.setInt(1, uneAffectation.getIdAffect());
		res = ps.executeUpdate();
		ps.close();
		return res == 1;
	}
	catch (SQLException e)
	{
		e.printStackTrace();
		JOptionPane.showMessageDialog(null, MessageAppli.MSG_BDD_ERREUR_REQUETE,
				MessageAppli.MSG_BDD_TITRE_ERREUR, JOptionPane.ERROR_MESSAGE);
	}
	return false;
}

/**
 * Renvoi la liste des Affectations
 * @param c
 * @return ArrayList<Affectation>
 */
public static ArrayList<Affectation> getListeAffectation(Connection c){
	ArrayList<Affectation> listeAffectation = new ArrayList<Affectation>();
	
	try
	{
		PreparedStatement ps = c.prepareStatement("SELECT * FROM affectation");
		ResultSet res = ps.executeQuery();
		
		while(res.next())
		{
			listeAffectation.add(new Affectation(res.getInt("idaffect"),res.getString("libelleaffect")));
		}
	}
	catch (SQLException e)
	{
		e.printStackTrace();
		JOptionPane.showMessageDialog(null, MessageAppli.MSG_BDD_ERREUR_REQUETE,
				MessageAppli.MSG_BDD_TITRE_ERREUR, JOptionPane.ERROR_MESSAGE);
	}
	return listeAffectation;
}

/**
 * Renvoi les infos de l'affectation
 * @param c, id Affectation
 * @return Affectation
 */
public static Affectation getAffectation(Connection c, int idAff){
	Affectation aff = null;
	
	try
	{
		PreparedStatement ps = c.prepareStatement("SELECT * FROM affectation WHERE idaffect = " + idAff);
		ResultSet res = ps.executeQuery();
		
		if(res.next())
		{
			aff = new Affectation(res.getInt("idaffect"),res.getString("libelleaffect"));
		}
	}
	catch (SQLException e)
	{
		e.printStackTrace();
		JOptionPane.showMessageDialog(null, MessageAppli.MSG_BDD_ERREUR_REQUETE,
				MessageAppli.MSG_BDD_TITRE_ERREUR, JOptionPane.ERROR_MESSAGE);
	}
	return aff;
}

}
